home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / programm.ing / falcon / a56v12st.lzh / a56 / examples / test-dac.lis < prev    next >
Encoding:
File List  |  1994-09-02  |  8.8 KB  |  303 lines

  1.               ; Various tests for output filter and DAC.  I used a Nippon Precision Circuits
  2.               ; SM5813AP dual-channel 8-times oversampling digital filter into a Burr Brown
  3.               ; PCM1700P dual-channel 18-bit DAC.  The code is very specific to my hardware.
  4.               ;
  5.               ; available signals:
  6.               ;       impulse
  7.               ;       square
  8.               ;       triangle
  9.               ;       sine            (uses twin-integrator harmonic oscillator)
  10.               ;
  11.               ; This code is not interrupt driven but simple spins waiting for transmitter
  12.               ; ready on each sample.
  13.               ;
  14.               ;
  15.               ; written by Quinn Jensen
  16.               ; home: jensenq@qcj.icon.com
  17.               ;
  18.               include "ioequ.inc"
  19.               
  20. P:0000                org     p:$0000
  21. P:0000 0C0040         jmp     <start
  22.               
  23. P:000C                org     p:$000C
  24.               ;ssi    jsr     ssi_int                         ;go handle SSI interrupt
  25.               
  26.               ; data areas
  27.               
  28. X:0000                org     x:$0
  29. X:0000 000000 i_left  dc      0                               ;left channel in
  30. X:0001 000000 i_right dc      0                               ;right channel in
  31.               
  32. P:0040                org     p:$40
  33. P:0040        start
  34.               
  35.               ; assign mode
  36.               
  37. P:0040 05F439         movec   #$0300,sr                       ;go to IPL 3
  38. P:0041 000300
  39.               
  40.               ; set up interrupts
  41.               
  42.               ;       movep   #0<<13|3<<12|0<<10,x:m_ipr      ;put SSI at lev 3, others off
  43.               
  44.               ; set system sample rate
  45.               
  46. P:0042 0AA406         bclr    #6,x:<<m_pbd                    ;32.55 kHz
  47. P:0043 0AA425         bset    #5,x:<<m_pbd                    ;
  48. P:0044 0AA404         bclr    #4,x:<<m_pbd                    ;
  49.               
  50.               ; set up SSI
  51.               
  52. P:0045 08F4AC         movep   #2<<13|1<<8,x:m_cra             ;16-bit word, 2 time slots
  53. P:0046 004100
  54. P:0047 08F4AD         movep   #0<<15|3<<12|1<<11|1<<9,x:m_crb ;sync,network,enable
  55. P:0048 003A00
  56.               
  57. P:0049 08F4A3         movep   #0,x:m_pcddr                    ;port C is SSI/SCI
  58. P:004A 000000
  59. P:004B 08F4A1         movep   #$1FF,x:m_pcc                   ;port C is SSI/SCI
  60. P:004C 0001FF
  61.               
  62.               ; enable interrupts
  63.               
  64.               ;       movec   #0,sr                           ;lower IPL
  65.               
  66. P:004D 0C004E         jmp     <impulse                        ;jump to the desired signal
  67.               
  68.               ; impulse
  69.               
  70. P:004E        impulse
  71. P:004E 56F400         move    #>-.5,a
  72. P:004F C00000
  73.               
  74. P:0050        im1
  75. P:0050 069081         do      #400,im0
  76. P:0051 000052
  77. P:0052 0D0057         jsr     <imp
  78. P:0053        im0     
  79. P:0053 200036         neg     a
  80. P:0054 0D0057         jsr     <imp
  81. P:0055 200036         neg     a
  82. P:0056 0C0050         jmp     <im1
  83.               
  84. P:0057        imp
  85. P:0057 0AAE86         jclr    #6,x:m_sr,*                     ;wait for transmitter ready
  86. P:0058 000057
  87. P:0059 08CE2F         movep   a,x:m_tx
  88. P:005A 0AAE86         jclr    #6,x:m_sr,*                     ;wait for transmitter ready
  89. P:005B 00005A
  90. P:005C 08CE2F         movep   a,x:m_tx
  91. P:005D 00000C         rts
  92.               
  93.               ; square wave
  94.               
  95. P:005E        square
  96. P:005E 56F400         move    #>-.1,a
  97. P:005F F33333
  98.               
  99. P:0060        sq1
  100. P:0060 06C880         do      #200,sq0
  101. P:0061 000067
  102. P:0062 0AAE86         jclr    #6,x:m_sr,*                     ;wait for transmitter ready
  103. P:0063 000062
  104. P:0064 08CE2F         movep   a,x:m_tx
  105. P:0065 0AAE86         jclr    #6,x:m_sr,*                     ;wait for transmitter ready
  106. P:0066 000065
  107. P:0067 08CE2F         movep   a,x:m_tx
  108. P:0068        sq0     
  109. P:0068 200036         neg     a
  110. P:0069 0C0060         jmp     <sq1
  111.               
  112.               
  113.               ; triangle wave
  114.               
  115. P:006A        triangle
  116. P:006A 44F400         move    #>.010,x0
  117. P:006B 0147AE
  118. P:006C 56F400         move    #>-.9,a
  119. P:006D 8CCCCD
  120.               
  121. P:006E        l0      
  122. P:006E 06B480         do      #90*2,l1
  123. P:006F 000076
  124. P:0070 200040         add     x0,a
  125. P:0071 0AAE86         jclr    #6,x:m_sr,*                     ;wait for transmitter ready
  126. P:0072 000071
  127. P:0073 08CE2F         movep   a,x:m_tx
  128. P:0074 0AAE86         jclr    #6,x:m_sr,*                     ;wait for transmitter ready
  129. P:0075 000074
  130. P:0076 08CE2F         movep   a,x:m_tx
  131. P:0077        l1
  132. P:0077 208F00         move    x0,b
  133. P:0078 20003E         neg     b
  134. P:0079 21E400         move    b,x0
  135. P:007A 0C006E         jmp     <l0
  136.               
  137.               
  138.               ; sine wave
  139.               
  140. P:007B        sine
  141. P:007B 44F400         move    #>.050,x0                       ;oscillator freq
  142. P:007C 066666
  143. P:007D 56F400         move    #>-.209,a                       ;initial conditions
  144. P:007E E53F7D
  145. P:007F 57F400         move    #>.2090,b                       ;
  146. P:0080 1AC083
  147.               
  148. P:0081        loop
  149. P:0081 2000D2         mac     x0,y0,a
  150. P:0082 21C600         move    a,y0
  151. P:0083 0AAE86         jclr    #6,x:m_sr,*                     ;wait for transmitter ready
  152. P:0084 000083
  153. P:0085 08CE2F         movep   a,x:m_tx                
  154. P:0086 2000DE         mac     -x0,y0,b
  155. P:0087 21E600         move    b,y0
  156. P:0088 0AAE86         jclr    #6,x:m_sr,*                     ;wait for transmitter ready
  157. P:0089 000088
  158. P:008A 08CF2F         movep   b,x:m_tx                
  159.               
  160. P:008B 0C0081         jmp     <loop
  161.               
  162.                       end
  163.  
  164. Summary of psect usage
  165.  
  166.                  section seg base last top      used       avail    total
  167. -------------------------------------------------------------------------
  168.  
  169.  
  170. Symbol Table
  171. -------------------------------------
  172.              sq0 000068
  173.              sq1 000060
  174.           square 00005E
  175.             loop 000081
  176.              imp 000057
  177.              im0 000053
  178.              im1 000050
  179.          impulse 00004E
  180.         triangle 00006A
  181.            start 000040
  182.             sine 00007B
  183.           m_scl1 00000F
  184.           m_scl0 00000E
  185.            m_scl 00C000
  186.           m_ssl1 00000D
  187.           m_ssl0 00000C
  188.            m_ssl 003000
  189.           m_hpl1 00000B
  190.           m_hpl0 00000A
  191.            m_hpl 000C00
  192.           m_ibl2 000005
  193.           m_ibl1 000004
  194.           m_ibl0 000003
  195.            m_ibl 000038
  196.           m_ial2 000002
  197.           m_ial1 000001
  198.           m_ial0 000000
  199.            m_ial 000007
  200.            m_ipr 00FFFF
  201.            m_rdf 000007
  202.            m_tde 000006
  203.            m_roe 000005
  204.            m_tue 000004
  205.            m_rfs 000003
  206.            m_tfs 000002
  207.            m_if1 000001
  208.            m_if0 000000
  209.             m_if 000002
  210.           m_srie 00000F
  211.           m_stie 00000E
  212.            m_sre 00000D
  213.            m_ste 00000C
  214.            m_mod 00000B
  215.            m_gck 00000A
  216.            m_syn 000009
  217.            m_fsl 000008
  218.           m_sckd 000005
  219.           m_scd2 000004
  220.           m_scd1 000003
  221.           m_scd0 000002
  222.            m_scd 00001C
  223.            m_of1 000001
  224.            m_of0 000000
  225.             m_of 000003
  226.            m_psr 00000F
  227.            m_wl1 00000E
  228.            m_wl0 00000D
  229.             m_wl 006000
  230.             m_dc 001F00
  231.             m_pm 0000FF
  232.            m_tsr 00FFEE
  233.             m_sr 00FFEE
  234.            m_crb 00FFED
  235.            m_cra 00FFEC
  236.             m_tx 00FFEF
  237.             m_rx 00FFEF
  238.            m_tcm 00000F
  239.            m_rcm 00000E
  240.            m_scp 00000D
  241.            m_cod 00000C
  242.             m_cd 000FFF
  243.             m_r8 000007
  244.             m_fe 000006
  245.             m_pe 000005
  246.             m_or 000004
  247.           m_idle 000003
  248.           m_rdrf 000002
  249.           m_tdre 000001
  250.           m_trne 000000
  251.           m_tmie 00000D
  252.            m_tie 00000C
  253.            m_rie 00000B
  254.           m_ilie 00000A
  255.             m_te 000009
  256.             m_re 000008
  257.           m_woms 000007
  258.            m_rwi 000006
  259.           m_wake 000005
  260.            m_sbk 000004
  261.           m_wds2 000002
  262.           m_wds1 000001
  263.           m_wds0 000000
  264.            m_wds 000003
  265.           m_sccr 00FFF2
  266.            m_ssr 00FFF1
  267.            m_scr 00FFF0
  268.           m_stxa 00FFF3
  269.           m_stxh 00FFF6
  270.           m_stxm 00FFF5
  271.           m_stxl 00FFF4
  272.           m_srxh 00FFF6
  273.           m_srxm 00FFF5
  274.           m_srxl 00FFF4
  275.            m_dma 000007
  276.            m_hf1 000004
  277.            m_hf0 000003
  278.             m_hf 000018
  279.            m_hcp 000002
  280.           m_htde 000001
  281.           m_hrdf 000000
  282.            m_hf3 000004
  283.            m_hf2 000003
  284.           m_hcie 000002
  285.           m_htie 000001
  286.           m_hrie 000000
  287.            m_htx 00FFEB
  288.            m_hrx 00FFEB
  289.            m_hsr 00FFE9
  290.            m_hcr 00FFE8
  291.            m_pcd 00FFE5
  292.          m_pcddr 00FFE3
  293.            m_pcc 00FFE1
  294.            m_pbd 00FFE4
  295.          m_pbddr 00FFE2
  296.            m_pbc 00FFE0
  297.            m_bcr 00FFFE
  298.          i_right 000001
  299.           i_left 000000
  300.               l0 00006E
  301.               l1 000077
  302. errors=0
  303.